﻿USE [KhaiDienTu]
GO
/****** Object:  StoredProcedure [dbo].[p_SOFTECH_HangMauDich_Insert]    Script Date: 03/21/2008 14:23:24 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[p_SOFTECH_HangMauDich_Insert]
	@SoTiepNhan BIGINT,	
	@MaHaiQuan char(6),	
	@NamTiepNhan SMALLINT,
	@SoThuTuHang int,
	@MaHS varchar(12),
	@MaPhu varchar(30),
	@TenHang nvarchar(80),
	@NuocXX_ID char(3),
	@DVT_ID char(3),
	@SoLuong numeric(18, 3),
	@TrongLuong numeric(18, 3),
	@DonGiaKB money,
	@DonGiaTT money,
	@TriGiaKB money,
	@TriGiaTT money,
	@TriGiaKB_VND money,
	@ThueSuatXNK numeric(5, 2),
	@ThueSuatTTDB numeric(5, 2),
	@ThueSuatGTGT numeric(5, 2),
	@ThueXNK money,
	@ThueTTDB money,
	@ThueGTGT money,
	@PhuThu money,
	@TyLeThuKhac numeric(5, 2),
	@TriGiaThuKhac money,
	@MienThue tinyint	
AS
BEGIN
	-- ================================= --
	-- Chèn dữ liệu vào CSDL KhaiDienTu. --
	-- ================================= --
	INSERT INTO KhaiDienTu.dbo.tblDHangMD
	(
		So_TNDKDT,
		Ma_HQTN,
		Nam_TN,
		STTHang,
		MaHang_KB,
		Ma_Hang,
		Ma_Phu,
		Ten_Hang,
		Nuoc_XX,
		Ma_DVT,
		Luong,
		DGia_KB,
		DGia_TT,
		Ma_DG,
		TriGia_KB,
		TriGia_TT,
		TGKB_VND,
		LoaiTSXNK,
		TS_XNK,
		TS_TTDB,
		TS_VAT,
		Thue_XNK,
		Thue_TTDB,
		Thue_VAT,
		Phu_Thu,
		MienThue,
		Tyle_ThuKhac,
		TriGia_ThuKhac
	)
	VALUES
	(
		@SoTiepNhan,
		@MaHaiQuan,
		@NamTiepNhan,
		@SoThuTuHang,
		@MaHS,
		@MaHS,
		@MaPhu,
		@TenHang,
		@NuocXX_ID,
		@DVT_ID,
		@SoLuong,					-- Lượng.
		@DonGiaKB,
		@DonGiaTT,					
		null,						-- Mã ĐG.
		@TriGiaKB,
		@TriGiaTT,
		@TriGiaKB_VND,
		null,						-- Loại TS.
		@ThueSuatXNK,
		@ThueSuatTTDB,
		@ThueSuatGTGT,
		@ThueXNK,
		@ThueTTDB,
		@ThueGTGT,
		@PhuThu,
		@MienThue,
		@TyleThuKhac,
		@TriGiaThuKhac
	)
END



GO
/****** Object:  StoredProcedure [dbo].[p_SOFTECH_ToKhaiMauDich_Delete]    Script Date: 03/21/2008 14:23:26 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[p_SOFTECH_ToKhaiMauDich_Delete]
	@SoTiepNhan BIGINT,
	@MaHaiQuan CHAR(6),
	@NamTiepNhan SMALLINT,
	@MaDoanhNghiep VARCHAR(14)
AS
BEGIN
	DELETE FROM [tblDTOKHAIMD] 
	WHERE 
		[So_TNDKDT] = @SoTiepNhan AND
		[Ma_HQTN] = @MaHaiQuan AND
		[Nam_TN] = @NamTiepNhan AND
		[Ma_DV] = CAST(@MaDoanhNghiep AS char(14))
END
	
GO
/****** Object:  StoredProcedure [dbo].[p_SOFTECH_ToKhaiMauDich_Insert]    Script Date: 03/21/2008 14:23:27 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[p_SOFTECH_ToKhaiMauDich_Insert]
	@SoTiepNhan BIGINT OUTPUT,	
	@MaHaiQuan char(6),	
	@NgayTiepNhan datetime,
	@SoToKhai int,
	@MaLoaiHinh char(5),
	@NgayDangKy datetime,
	@MaDoanhNghiep varchar(14),
	@TenDoanhNghiep nvarchar(255),
	@MaDaiLyTTHQ varchar(14),
	@TenDaiLyTTHQ nvarchar(255),
	@TenDonViDoiTac nvarchar(255),
	@ChiTietDonViDoiTac nvarchar(255),
	@SoGiayPhep nvarchar(50),
	@NgayGiayPhep datetime,
	@NgayHetHanGiayPhep datetime,
	@SoHopDong nvarchar(50),
	@NgayHopDong datetime,
	@NgayHetHanHopDong datetime,
	@SoHoaDonThuongMai nvarchar(50),
	@NgayHoaDonThuongMai datetime,
	@PTVT_ID varchar(3),
	@SoHieuPTVT nvarchar(50),
	@NgayDenPTVT datetime,
	@QuocTichPTVT_ID char(3),
	@LoaiVanDon nvarchar(50),
	@SoVanDon nvarchar(50),
	@NgayVanDon datetime,
	@NuocXK_ID char(3),
	@NuocNK_ID char(3),
	@DiaDiemXepHang nvarchar(255),
	@CuaKhau_ID char(4),
	@DKGH_ID varchar(7),
	@NguyenTe_ID char(3),
	@TyGiaTinhThue money,
	@TyGiaUSD money,
	@PTTT_ID varchar(10),
	@SoHang smallint,
	@SoLuongPLTK smallint,
	@TenChuHang nvarchar(30),
	@SoContainer20 numeric(15, 0),
	@SoContainer40 numeric(15, 0),
	@SoKien numeric(15, 0),
	@TrongLuong numeric(18, 2),
	@TongTriGiaKhaiBao money,
	@TongTriGiaTinhThue money,
	@TrangThaiXuLy int,
	@LoaiToKhaiGiaCong varchar(3),
	@LePhiHaiQuan money,
	@PhiBaoHiem money,
	@PhiVanChuyen money,
	@PhiXepDoHang money,
	@PhiKhac money,
	@CanBoDangKy varchar(100),
	@QuanLyMay bit
AS
BEGIN
	SET XACT_ABORT ON
	BEGIN TRANSACTION		
		DECLARE @QuanLyMayKDT bit

		IF (@QuanLyMay = 0)			
			SET @QuanLyMayKDT = 1
		ELSE
			SET @QuanLyMayKDT = 0

		DECLARE @NamTiepNhan SmallInt
		SET @NamTiepNhan = YEAR(@NgayTiepNhan)
		
		-- =====================================================
		-- Tìm số tiếp nhận của hệ thống Khai điện tử HQ 2002 --
		-- =====================================================
		DECLARE @SoTiepNhanKDT BigInt
		IF NOT EXISTS(SELECT * FROM KhaiDienTu.dbo.tblCAPSO_TOKHAI WHERE (Ma_HQTN = @MaHaiQuan) AND (Nam_TN = @NamTiepNhan))
			BEGIN
				SET @SoTiepNhanKDT = 1					
				INSERT INTO KhaiDienTu.dbo.tblCAPSO_TOKHAI VALUES(@MaHaiQuan, @NamTiepNhan, @SoTiepNhanKDT)
			END
		ELSE
			BEGIN						
				SELECT @SoTiepNhanKDT = SoMax FROM KhaiDienTu.dbo.tblCAPSO_TOKHAI TABLOCKX WHERE (Ma_HQTN = @MaHaiQuan) AND (Nam_TN = @NamTiepNhan)
				SET @SoTiepNhanKDT = @SoTiepNhanKDT + 1
				UPDATE KhaiDienTu.dbo.tblCAPSO_TOKHAI SET SoMax = @SoTiepNhanKDT WHERE (Ma_HQTN = @MaHaiQuan) AND (Nam_TN = @NamTiepNhan)
			END			

		SET @SoTiepNhan = @SoTiepNhanKDT
		-- ====================================
		-- Chèn dữ liệu vào CSDL KhaiDienTu. --
		-- ====================================
		INSERT INTO KhaiDienTu.dbo.tblDTOKHAIMD
		(
			So_TNDKDT,
			Ma_HQTN,
			Nam_TN,
			So_TK,
			Ma_LH,
			Nhom_LH,
			Ma_HQ,
			NamDK,
			Ngay_DK,
			Ma_DV,
			Ten_DV,
			Ma_DVUT,
			Ten_DVUT,
			DaiLy_TTHQ,
			TenDLTTHQ,
			DV_DT,
			So_GP,
			Ngay_GP,
			Ngay_HHGP,
			So_HD,
			Ngay_HD,
			Ngay_HHHD,
			So_HDTM,
			Ngay_HDTM,
			Ma_PTVT,
			Ten_PTVT,
			NgayKH,
			NgayDen,
			Van_Don,
			Ngay_VanDon,
			Nuoc_XK,
			Nuoc_NK,
			CangNN,
			Ma_CK,
			Ma_GH,
			Ma_NT,
			TyGia_VND,
			TyGia_USD,
			Ma_PTTT,
			GiayTo,
			SoHang,
			So_PLTK,
			TenCH,
			Ngay_KB,
			So_Container,
			So_Container40,
			So_Kien,
			Tr_Luong,
			Pass_GC,
			User_DK,
			TongTGKB,
			TongTGTT,
			TrangThaiXL,
			KieuKB,
			Ma_DVKB,
			QLMay,
			LoaiTKGC,
			DDiem_KH,
			Ngay_KH,
			LePhi_HQ,
			Phi_BH,
			Phi_VC
		)
		VALUES
		(
			@SoTiepNhanKDT,															-- Số tiếp nhận.
			@MaHaiQuan,																-- Mã Hải quan.
			@NamTiepNhan,															-- Năm tiếp nhận.
			null,																	-- Số tờ khai.
			@MaLoaiHinh,															-- Mã loại hình.
			LEFT(@MaLoaiHinh, 3),													-- Nhóm loại hình.
			@MaHaiQuan,																-- Mã Hải quan.
			@NamTiepNhan,															-- Năm tiếp nhận.
			@NgayTiepNhan,															-- Ngày tiếp nhận.
			CAST(@MaDoanhNghiep AS char(14)),										-- Mã doanh nghiệp.
			CAST(@TenDoanhNghiep AS NVARCHAR(50)),									-- Tên doanh nghiệp.
			'',																		-- Mã DVUT.
			'',																		-- Tên DVUT.
			CAST(@MaDaiLyTTHQ AS char(14)),											-- Mã DL TTHQ.
			CAST(@TenDaiLyTTHQ AS NVARCHAR(50)),									-- Tên DL TTHQ.
			@TenDonViDoiTac,														-- Tên đơn vị đối tác.
			@SoGiayPhep,															-- Số giấy phép.
																					-- Ngày giấy phép.			
			CASE WHEN @NgayGiayPhep = '01/01/1900' THEN null ELSE @NgayGiayPhep END,
																					-- Ngày hết hạn giấy phép.
			CASE WHEN @NgayHetHanGiayPhep = '01/01/1900' THEN null ELSE @NgayHetHanGiayPhep END,
			@SoHopDong,																-- Số hợp đồng.
																					-- Ngày hợp đồng.
			CASE WHEN @NgayHopDong = '01/01/1900' THEN null ELSE @NgayHopDong END,
																					-- Ngày hết hạn hợp đồng.
			CASE WHEN @NgayHetHanHopDong = '01/01/1900' THEN null ELSE @NgayHetHanHopDong END,
			@SoHoaDonThuongMai,														-- Số hóa đơn thương mại.
			CASE WHEN @NgayHoaDonThuongMai = '01/01/1900' THEN null ELSE @NgayHoaDonThuongMai END,
			@PTVT_ID,																-- Phương thức vận tải.
			@SoHieuPTVT,															-- Số hiệu của phương tiện vận tải.
			null,																	-- Ngày kiểm hóa.
			@NgayDenPTVT,															-- Ngày đến của phương tiện vận tải.
			@SoVanDon,
			CASE WHEN @NgayVanDon = '01/01/1900' THEN null ELSE @NgayVanDon END,
			@NuocXK_ID,																-- Nước xuất khẩu.
			@NuocNK_ID,																-- Nước nhập khẩu.
			@DiaDiemXepHang,														-- Cửa khẩu nước ngoài.
			@CuaKhau_ID,															-- Cửa khẩu trong nước.
			@DKGH_ID,																-- Điều kiện giao hàng.
			@NguyenTe_ID,															-- Đồng tiền thanh toán.
			@TyGiaTinhThue,															-- Tỷ giá tính thuế.
			@TyGiaUSD,																-- Tỷ giá USD.
			@PTTT_ID,																-- Phương thức thanh toán.
			'',																		-- Chứng từ kèm.
			0,																		-- Số hàng.
			@SoLuongPLTK,															-- Số lượng phụ lục tờ khai.
			@TenChuHang,															-- Tên chủ hàng.
			@NgayTiepNhan,															-- Ngày tiếp nhận.
																					-- Số container 20.
			CASE WHEN @SoContainer20 = 0 THEN null ELSE @SoContainer20 END,
																					-- Số container 40.
			CASE WHEN @SoContainer40 = 0 THEN null ELSE @SoContainer40 END,
																					-- Số kiện.
			CASE WHEN @SoKien = 0 THEN null ELSE @SoKien END,
			
			@TrongLuong,															-- Trọng lượng.
			0,																		-- Pass GC.
			@CanBoDangKy,															-- User DK.
			@TongTriGiaKhaiBao,														-- Tổng trị giá khai báo.
			@TongTriGiaTinhThue,													-- Tổng trị giá tiền thuế.
			0,																		-- Trạng thái XL.
			0,																		-- Kiểu KB.
			null,																	-- Mã đơn vị KB.
			@QuanLyMayKDT,															-- QL máy.
			'KHA',																	-- Loại TKGC.
			null,																	-- Địa điểm KH.
			null,																	-- Ngày KH.
			@LePhiHaiQuan,															-- Lệ phí Hải quan.
			@PhiBaoHiem,															-- Phí bảo hiểm.
			@PhiVanChuyen															-- Phí vận chuyển.
		)

	COMMIT TRANSACTION

END
